DA
pedido

Wild grover rune

Por damiaotorres, 02 de jun. de 2015 em Scripts

18
3.4k
02 de junho de 2015 às 13:41

Como faço pra colocar em mais de um local pra essa runa não ser usada?

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)
local Zombie = {
frompos = {x=1136, y=1019, z=7},
topos = {x=1169, y=1039, z=7},
}
function onCastSpell(cid, var)
if not isInArea(getPlayerPosition(cid), Zombie.frompos, Zombie.topos) then
return doCombat(cid, combat, var)
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não pode usar wild grouth rune nesta area.")
end
end

 

 

FurabioF
02 de junho de 2015 às 13:51

Testa assim to em dúvida se quando der o return vai sair ou não do for ph34r.png

local areas = {
  [1] = {frompos = {x=1136, y=1019, z=7}, topos = {x=1169, y=1039, z=7}},
  -- exemplo [2] = {frompos = {x= xxx, y= xxx, z= x}, topos = {x= xxx, y=xxx, z=x}},
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)

function onCastSpell(cid, var)
  for i = 1, #areas do
    if not isInArea(getPlayerPosition(cid), areas[i].frompos, areas[i].topos) then 
      return doCombat(cid, combat, var)
    else 
      return doPlayerSendCancel(cid,"Você não pode usar wild grouth rune nesta area.")
    end
  end
end

Editado Junho 2 por Flavio S

02 de junho de 2015 às 14:22

Não prestou e deu erro no script

 

[02/06/2015 14:19:44] [Error - Spell Interface]

[02/06/2015 14:19:44] data/spells/scripts/support/wild growth rune.lua:onCastSpell
[02/06/2015 14:19:44] Description:
[02/06/2015 14:19:44] data/spells/scripts/support/wild growth rune.lua:15: attempt to call global 'doSendCancel' (a nil value)
[02/06/2015 14:19:44] stack traceback:
[02/06/2015 14:19:44] data/spells/scripts/support/wild growth rune.lua:15: in function <data/spells/scripts/support/wild growth rune.lua:10>
[02/06/2015 14:19:47] [Error - Spell Interface]
[02/06/2015 14:19:47] data/spells/scripts/support/wild growth rune.lua:onCastSpell
[02/06/2015 14:19:47] Description:
[02/06/2015 14:19:47] data/spells/scripts/support/wild growth rune.lua:15: attempt to call global 'doSendCancel' (a nil value)
[02/06/2015 14:19:47] stack traceback:
[02/06/2015 14:19:47] data/spells/scripts/support/wild growth rune.lua:15: in function <data/spells/scripts/support/wild growth rune.lua:10>
[02/06/2015 14:19:49] [Error - Spell Interface]
[02/06/2015 14:19:50] data/spells/scripts/support/wild growth rune.lua:onCastSpell
[02/06/2015 14:19:50] Description:
[02/06/2015 14:19:50] data/spells/scripts/support/wild growth rune.lua:15: attempt to call global 'doSendCancel' (a nil value)
[02/06/2015 14:19:50] stack traceback:
[02/06/2015 14:19:50] data/spells/scripts/support/wild growth rune.lua:15: in function <data/spells/scripts/support/wild growth rune.lua:10>
BrunoB
02 de junho de 2015 às 14:35

Não prestou e deu erro no script

Tenta assim:

local areas = {
  [1] = {frompos = {x=1136, y=1019, z=7}, topos = {x=1169, y=1039, z=7}},
  -- exemplo [2] = {frompos = {x= xxx, y= xxx, z= x}, topos = {x= xxx, y=xxx, z=x}},
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)

function onCastSpell(cid, var)
  for i = 1, #areas do
    if not isInArea(getPlayerPosition(cid), areas[i].frompos, areas[i].topos) then 
      return doCombat(cid, combat, var)
    else 
      doPlayerSendCancel(cid, "Voce nao pode usar wild growth rune nesta area.")
    end
  end
end
FurabioF
02 de junho de 2015 às 14:37

Editado o script, teste novamente.

Editado Junho 2 por Flavio S

02 de junho de 2015 às 15:10

Nenhum prestou

FurabioF
02 de junho de 2015 às 15:15

erros ?

02 de junho de 2015 às 15:40

Ainda da pra usar nessa areas :/

BrunoB
02 de junho de 2015 às 16:35

Ainda da pra usar nessa areas :/

Você configurou corretamente o script?

 

Imagine que sua área seja o quadrado amarelo...

As variáveis são os pontos vermelhos:

nDenkYz.jpg

LumusL
02 de junho de 2015 às 16:54
Melhor resposta

Você configurou corretamente o script?

 

Imagine que sua área seja o quadrado amarelo...

As variáveis são os pontos vermelhos:

nDenkYz.jpg

Eu fiz o teste aqui e consta a mesma coisa do membro acima, sem erros e da pra usar.

 

Testei e funciona:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)
 
 
function onCastSpell(cid, var)
local block_area = {
{{x=A,y=B,z=C}, {x=D,y=E,z=F}} -- pos começo e final da area
}
for _, var in ipairs(block_area) do
if isInRange(getCreaturePosition(cid), var[1], var[2]) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,  "Você não pode jogar wild grover nesta area.") return false
end
end
return doCombat(cid, combat, var)
end

Editado Junho 2 por Fawz

BrunoB
02 de junho de 2015 às 17:19

@@damiaotorres,

Teste assim:

local areas = {
	[1] = {frompos = {x=1136, y=1019, z=7}, topos = {x=1169, y=1039, z=7}},
	-- exemplo [2] = {frompos = {x= xxx, y= xxx, z= x}, topos = {x= xxx, y=xxx, z=x}},
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499) 

function onCastSpell(cid, var) 
	for i = 1, #areas do
		if isInArea(getThingPosition(cid), areas[i].frompos, areas[i].topos) then
			return false, doPlayerSendCancel(cid, "Voce nao pode usar wild growth rune nesta area.")
		end
	end
	return doCombat(cid, combat, var) 
end
FurabioF
02 de junho de 2015 às 19:19

Se o script acima não funcionar use esse :

local areas = {
  -- exemplo {{x= xxx, y= xxx, z= x}, {x= xxx, y=xxx, z=x}}, começo e fim da area
  {{x=1136, y=1019, z=7}, {x=1169, y=1039, z=7}},
}
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)

function onCastSpell(cid, var)
  local p = 0
  for _, area in pairs(areas) do
    if isInRange(getCreaturePosition(cid), area[1], area[2]) then
      p = 1
      break
    end
  end
  if p == 0 then
    return doCombat(cid, combat, var)
  else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,  "Você não pode jogar wild grover nesta area.") 
    return false
  end
end

Editado Junho 2 por Flavio S

02 de junho de 2015 às 21:55

Não Presto

 

Se o script acima não funcionar use esse :

local areas = {
  -- exemplo {{x= xxx, y= xxx, z= x}, {x= xxx, y=xxx, z=x}}, começo e fim da area
  {{x=1136, y=1019, z=7}, {x=1169, y=1039, z=7}},
}
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)

function onCastSpell(cid, var)
  local p = 0
  for _, area in pairs(areas) do
    if isInRange(getCreaturePosition(cid), area[1], area[2]) then
      p = 1
      break
    end
  end
  if p == 0 then
    return doCombat(cid, combat, var)
  else
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,  "Você não pode jogar wild grover nesta area.") 
    return false
  end
end

 

 

Tbm deu erro

 

 

@@damiaotorres,

Teste assim:

local areas = {
	[1] = {frompos = {x=1136, y=1019, z=7}, topos = {x=1169, y=1039, z=7}},
	-- exemplo [2] = {frompos = {x= xxx, y= xxx, z= x}, topos = {x= xxx, y=xxx, z=x}},
}

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499) 

function onCastSpell(cid, var) 
	for i = 1, #areas do
		if isInArea(getThingPosition(cid), areas[i].frompos, areas[i].topos) then
			return false, doPlayerSendCancel(cid, "Voce nao pode usar wild growth rune nesta area.")
		end
	end
	return doCombat(cid, combat, var) 
end

 

Fawz tem como coloca pra não poder usar em 2 área? em uma o meu da o problema que quero coloca em 2 área e não só em uma

 

 

Eu fiz o teste aqui e consta a mesma coisa do membro acima, sem erros e da pra usar.

 

Testei e funciona:

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
setCombatParam(combat, COMBAT_PARAM_CREATEITEM, 1499)
 
 
function onCastSpell(cid, var)
local block_area = {
{{x=A,y=B,z=C}, {x=D,y=E,z=F}} -- pos começo e final da area
}
for _, var in ipairs(block_area) do
if isInRange(getCreaturePosition(cid), var[1], var[2]) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,  "Você não pode jogar wild grover nesta area.") return false
end
end
return doCombat(cid, combat, var)
end
LumusL
02 de junho de 2015 às 22:32

Só adicionar aqui:

local block_area = {
{{x=A,y=B,z=C}, {x=D,y=E,z=F}}, -- pos começo e final da area
{{x=A,y=B,z=C}, {x=D,y=E,z=F}}
}

PS: Esqueci de citar: créditos ao Vodkart.

Editado Junho 2 por Fawz

BrunoB
02 de junho de 2015 às 22:37

Não Presto

 

 

Tbm deu erro

 

 

Fawz tem como coloca pra não poder usar em 2 área? em uma o meu da o problema que quero coloca em 2 área e não só em uma

 

Amigo, qual erro? Você precisa ser mais específico